Introduction to Distributional Regression

Practical session 1

Gillian Heller

NHMRC Clinical Trials Centre, University of Sydney

gillian.heller@sydney.edu.au

Practical session 1

Plasma data set

Harrell (2002): “Observational studies have suggested that low dietary intake or low plasma concentrations of retinol, beta-carotene, or other carotenoids might be associated with increased risk of developing certain types of cancer … We designed a cross-sectional study to investigate the relationship between personal characteristics and dietary factors, and plasma concentrations of retinol, beta-carotene, and other carotenoids.”

Plasma data set

data(plasma)
Variable Description
age age (years)
sex factor sex (1=male, 2=female)
smokstat factor smoking status (1=never, 2=former, 3=current smoker)
bmi body mass index (weight/(height2))
vituse factor vitamin use (1=yes, fairly often, 2=yes, not often, 3=no)
calories number of calories consumed per day
fat grams of fat consumed per day
fiber grams of fiber consumed per day
alcohol number of alcoholic drinks consumed per week
cholesterol cholesterol consumed (mg per day)
betadiet dietary beta-carotene consumed (mcg per day)
retdiet dietary retinol consumed (mcg per day)
betaplasma plasma beta-carotene (ng/ml)
retplasma plasma retinol (ng/ml)
  • We will model betadiet as the response variable.

Plasma data set

Scatterplot matrix

Code
library(GGally)
ggpairs(plasma, columns = 1:11, progress = FALSE)

Plasma data set

  • Clearly one alcohol observation is outlying (203 drinks/week)

  • In the absence of other information, we exclude it

plasma |>
  filter(alcohol<200) -> plasma

Plasma data set

hist(plasma$betadiet, breaks=25)

Plasma data set: Find marginal distribution

  • The gamlss version is
fitDist(plasma$betadiet, type = "realAll", trace = FALSE)
  • gamlss2 function: find_family()
f <- find_family(plasma$betadiet, families = available_families(type = "continuous"))
.. BCCG family
.. .. IC = 5659.624 
.. BCCGo family
.. .. IC = 5659.666 
.. BCCGuntr family
.. .. error
.. BCPE family
.. .. IC = 5352.343 
.. BCPEo family
.. .. IC = 5448.862 
.. BCPEuntr family
.. .. error
.. BCT family
.. .. IC = 5335.245 
.. BCTo family
.. .. IC = 5335.245 
.. BCTuntr family
.. .. error
.. BE family
.. .. error
.. BEo family
.. .. error
.. EGB2 family
.. .. error
.. exGAUS family
.. .. IC = 5335.182 
.. EXP family
.. .. IC = 5459.178 
.. GA family
.. .. IC = 5340.096 
.. GAF family
.. .. IC = 11268.92 
.. GB1 family
.. .. error
.. GB2 family
.. .. IC = 5342.274 
.. GG family
.. .. IC = 5333.242 
.. GIG family
.. .. IC = 5333.237 
.. GP family
.. .. IC = 5485.109 
.. GT family
.. .. IC = 5423.975 
.. GU family
.. .. IC = 5673.845 
.. IG family
.. .. IC = 5337.755 
.. IGAMMA family
.. .. IC = 5368.155 
.. JSU family
.. .. IC = 5338.221 
.. JSUo family
.. .. IC = 5349.94 
.. LNO family
.. .. error
.. LO family
.. .. IC = 5440.542 
.. LOGITNO family
.. .. error
.. LOGNO family
.. .. IC = 5333.183 
.. LOGNO2 family
.. .. IC = 5333.183 
.. LQNO family
.. .. IC = 5476.541 
.. NET family
.. .. error
.. NO family
.. .. IC = 5476.535 
.. NO2 family
.. .. IC = 5476.535 
.. NOF family
.. .. IC = 5478.535 
.. PARETO family
.. .. IC = 6590.391 
.. PARETO1 family
.. .. IC = 6590.895 
.. PARETO1o family
.. .. error
.. PARETO2 family
.. .. IC = 5485.109 
.. PARETO2o family
.. .. IC = 5643.069 
.. PE family
.. .. IC = 5487.561 
.. PE2 family
.. .. IC = 5446.202 
.. RG family
.. .. IC = 5358.632 
.. RGE family
.. .. error
.. SEP family
.. .. IC = 5336.446 
.. SEP1 family
.. .. IC = 5336.598 
.. SEP2 family
.. .. IC = 5336.406 
.. SEP3 family
.. .. IC = 5342.212 
.. SEP4 family
.. .. IC = 5337.655 
.. SHASH family
.. .. IC = 5346.118 
.. SHASHo family
.. .. IC = 5340.656 
.. SHASHo2 family
.. .. IC = 5339.187 
.. SIMPLEX family
.. .. error
.. SN1 family
.. .. IC = 5478.542 
.. SN2 family
.. .. IC = 5353.238 
.. SST family
.. .. IC = 5337.28 
.. ST1 family
.. .. IC = 5336.647 
.. ST2 family
.. .. IC = 5336.344 
.. ST3 family
.. .. IC = 5338.954 
.. ST3C family
.. .. IC = 5338.954 
.. ST4 family
.. .. IC = 5385.382 
.. ST5 family
.. .. IC = 5354.737 
.. TF family
.. .. IC = 5430.886 
.. TF2 family
.. .. IC = 5430.985 
.. WEI family
.. .. IC = 5360.282 
.. WEI2 family
.. .. IC = 5374.119 
.. WEI3 family
.. .. IC = 5360.282 

Plasma data set: Find marginal distribution

f
      GAF   PARETO1    PARETO        GU     BCCGo      BCCG  PARETO2o        PE 
11268.918  6590.895  6590.391  5673.845  5659.666  5659.624  5643.069  5487.561 
  PARETO2        GP       SN1       NOF      LQNO       NO2        NO       EXP 
 5485.109  5485.109  5478.542  5478.536  5476.541  5476.536  5476.536  5459.178 
    BCPEo       PE2        LO       TF2        TF        GT       ST4      WEI2 
 5448.862  5446.202  5440.542  5430.985  5430.886  5423.975  5385.382  5374.119 
   IGAMMA       WEI      WEI3        RG       ST5       SN2      BCPE      JSUo 
 5368.155  5360.282  5360.282  5358.631  5354.737  5353.238  5352.343  5349.941 
    SHASH       GB2      SEP3    SHASHo        GA   SHASHo2       ST3      ST3C 
 5346.118  5342.274  5342.212  5340.656  5340.096  5339.187  5338.954  5338.954 
      JSU        IG      SEP4       SST       ST1      SEP1       SEP      SEP2 
 5338.221  5337.755  5337.655  5337.280  5336.647  5336.598  5336.446  5336.406 
      ST2       BCT      BCTo    exGAUS        GG       GIG     LOGNO    LOGNO2 
 5336.344  5335.245  5335.245  5335.182  5333.242  5333.237  5333.183  5333.183 

Plasma data set: Find marginal distribution

histDist(plasma$betadiet, family = "GIG", nbins = 25)


Family:  c("GIG", "Generalised Inverse Gaussian") 
Fitting method: "nlminb" 

Call:  gamlssML(formula = plasma$betadiet, family = "GIG") 

Mu Coefficients:
[1]  7.689
Sigma Coefficients:
[1]  -0.2695
Nu Coefficients:
[1]  1.019

 Degrees of Freedom for the fit: 3 Residual Deg. of Freedom   311 
Global Deviance:     5327.23 
            AIC:     5333.23 
            SBC:     5344.48 
histDist(plasma$betadiet, family = "LOGNO2", nbins = 25)


Family:  c("LOGNO2", "Log Normal 2") 
Fitting method: "nlminb" 

Call:  gamlssML(formula = plasma$betadiet, family = "LOGNO2") 

Mu Coefficients:
[1]  7.479
Sigma Coefficients:
[1]  -0.4119

 Degrees of Freedom for the fit: 2 Residual Deg. of Freedom   312 
Global Deviance:     5329.18 
            AIC:     5333.18 
            SBC:     5340.68 

Plasma data set: Find conditional distribution

  • Specify age + fiber + log(cholesterol) for mu
formula = betadiet ~ age + fiber + log(cholesterol) | 1 | 1 | 1
g <- find_gamlss2(formula, data = plasma, verbose = FALSE, 
          select = FALSE,
          families = available_families(type = "continuous"))
.. .. IC = 5327.757 
.. .. IC = 5337.051 
.. .. error
.. .. IC = 5230.775 
.. .. IC = 5248.64 
.. .. error
.. .. IC = 5218.527 
.. .. IC = 5236.207 
.. .. error
.. .. error
.. .. error
.. .. IC = 24530.73 
.. .. IC = 5279.37 
.. .. IC = 5429.382 
.. .. IC = 5243.367 
.. .. IC = 5245.367 
.. .. error
.. .. IC = 5237.519 
.. .. IC = 5235.951 
.. .. IC = 5239.16 
.. .. IC = 5457.182 
.. .. IC = 5325.237 
.. .. IC = 5602.88 
.. .. IC = 5258.039 
.. .. IC = 5265.02 
.. .. IC = 5281.75 
.. .. IC = 5289.245 
.. .. error
.. .. IC = 5344.945 
.. .. error
.. .. IC = 5235.592 
.. .. IC = 5235.592 
.. .. IC = 5373.805 
.. .. error
.. .. IC = 5395.453 
.. .. IC = 5395.453 
.. .. IC = 5365.33 
.. .. IC = 6595.697 
.. .. IC = 6596.203 
.. .. error
.. .. IC = 5457.182 
.. .. IC = 5649.069 
.. .. IC = 5326.55 
.. .. IC = 5326.757 
.. .. IC = 5289.186 
.. .. error
.. .. IC = 5305.991 
.. .. IC = 5290.87 
.. .. IC = 5297.61 
.. .. IC = 5287.474 
.. .. IC = 5284.034 
.. .. IC = 5282.09 
.. .. IC = 5283.886 
.. .. IC = 5283.559 
.. .. error
.. .. IC = 5397.482 
.. .. IC = 5312.301 
.. .. IC = 5286.17 
.. .. IC = 5290.847 
.. .. IC = 5290.699 
.. .. IC = 5287.471 
.. .. IC = 5287.471 
.. .. IC = 5291.873 
.. .. IC = 5287.657 
.. .. IC = 5323.208 
.. .. IC = 5323.556 
.. .. IC = 5278.599 
.. .. IC = 5281.321 
.. .. IC = 5278.599 

Plasma data set: Find conditional distribution

summary(g)
Call:
gamlss2(formula = formula, data = ..1, family = families[[j]], 
    ... = pairlist(trace = FALSE))
---
Family: BCT 
Link function: mu = identity, sigma = log, nu = identity, tau = log
*--------
Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
mu.(Intercept)      -1.656e+03  5.029e+02  -3.293  0.00111 ** 
mu.age               1.057e+01  3.227e+00   3.275  0.00118 ** 
mu.fiber             1.272e+02  1.209e+01  10.520  < 2e-16 ***
mu.log(cholesterol)  2.713e+02  9.144e+01   2.967  0.00325 ** 
sigma.(Intercept)   -7.170e-01  6.693e-02 -10.712  < 2e-16 ***
nu.(Intercept)       1.596e-01  1.001e-01   1.595  0.11180    
tau.(Intercept)      2.318e+00  5.333e-01   4.346 1.89e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
*--------
n = 314 df =  7 res.df =  307
Deviance = 5204.5267 Null Dev. Red. = 3.38%
AIC = 5218.5267 elapsed =  0.20sec


  • BCT is chosen

BCT distribution

Variable selection

Options for variable selection are

  • stepwise selection

  • LASSO, ridge regression

  • boosting [not covered]

Stepwise selection

  • We use the gamlss function stepGAICAll.A()

  • I have limited the number of variables considered because of computing time

  • For each continuous covariate I have included the linear term and a smooth term pb()

  • Start with model m0

  • Specify lower and upper scope for all distribution parameters

m0 <- gamlss(betadiet ~ 1, data=plasma, family = BCTo, n.cyc=50)
GAMLSS-RS iteration 1: Global Deviance = 5347.725 
GAMLSS-RS iteration 2: Global Deviance = 5328.487 
GAMLSS-RS iteration 3: Global Deviance = 5327.318 
GAMLSS-RS iteration 4: Global Deviance = 5327.247 
GAMLSS-RS iteration 5: Global Deviance = 5327.246 
GAMLSS-RS iteration 6: Global Deviance = 5327.246 
m.step <- stepGAICAll.A(m0, 
                scope=list(lower=~1, 
                           upper=~
                                  #age + pb(age) +
                                  factor(sex) + factor(smokstat) + factor(vituse) +
                                  #bmi +  pb(bmi) +
                                  #calories + pb(calories) + 
                                  fat + pb(fat) + 
                                  fiber + pb(fiber) + 
                                  #alcohol + pb(alcohol) + 
                                  cholesterol + pb(cholesterol) + log(cholesterol)))
--------------------------------------------------- 
Distribution parameter:  mu 
Start:  AIC= 5335.25 
 betadiet ~ 1 

                       Df    AIC
+ pb(fiber)        2.9280 5229.0
+ fiber            1.0000 5242.1
+ pb(cholesterol)  6.2191 5314.3
+ log(cholesterol) 1.0000 5325.9
+ pb(fat)          1.8392 5327.7
+ fat              1.0000 5328.6
+ factor(smokstat) 2.0000 5330.2
+ cholesterol      1.0000 5331.6
+ factor(vituse)   2.0000 5335.2
<none>                    5335.2
+ factor(sex)      1.0000 5336.9

Step:  AIC= 5229.01 
 betadiet ~ pb(fiber) 

                        Df    AIC
+ pb(cholesterol)  2.74678 5226.2
+ log(cholesterol) 0.92635 5228.8
<none>                     5229.0
+ factor(smokstat) 1.94075 5230.0
+ cholesterol      0.96754 5230.6
+ pb(fat)          1.01357 5231.0
+ fat              1.01296 5231.0
+ factor(sex)      0.99938 5231.0
+ factor(vituse)   2.02699 5231.2

Step:  AIC= 5226.16 
 betadiet ~ pb(fiber) + pb(cholesterol) 

                         Df    AIC
+ fat               4.36154 5218.9
+ pb(fat)           4.36222 5218.9
+ factor(smokstat)  5.35396 5218.9
+ factor(vituse)    2.40313 5226.1
<none>                      5226.2
+ log(cholesterol) -0.80771 5226.7
+ factor(sex)       1.01289 5228.1

Step:  AIC= 5218.86 
 betadiet ~ pb(fiber) + pb(cholesterol) + fat 
                            Df    AIC
+ factor(smokstat)  2.49256711 5217.2
<none>                         5218.9
+ pb(fat)           0.00067679 5218.9
+ log(cholesterol)  1.21056508 5220.2
+ factor(sex)       1.10724977 5220.4
+ factor(vituse)   -0.73403543 5225.3

Step:  AIC= 5217.18 
 betadiet ~ pb(fiber) + pb(cholesterol) + fat + factor(smokstat) 
                           Df    AIC
<none>                        5217.2
+ pb(fat)          0.00069551 5217.2
+ log(cholesterol) 1.31999672 5218.1
+ factor(sex)      1.10364517 5218.6
+ factor(vituse)   1.75823075 5218.6
--------------------------------------------------- 
Distribution parameter:  sigma 
Start:  AIC= 5217.18 
 ~1 
                         Df    AIC
+ cholesterol       1.55290 5217.1
<none>                      5217.2
+ factor(sex)       1.07638 5217.9
+ log(cholesterol)  1.29666 5217.9
+ factor(vituse)    2.19742 5218.6
+ pb(fiber)         1.57421 5218.9
+ fat               0.91267 5218.9
+ pb(fat)           0.91292 5218.9
+ fiber             0.97995 5219.2
+ factor(smokstat)  1.86269 5220.6
+ pb(cholesterol)  31.99645 6529.3

Step:  AIC= 5217.08 
 ~cholesterol 
                         Df    AIC
<none>                      5217.1
+ pb(fiber)         2.18436 5217.9
+ log(cholesterol)  1.37681 5218.1
+ factor(vituse)    2.22721 5218.2
+ factor(sex)       0.99664 5218.3
+ fiber             0.97489 5219.0
+ pb(fat)           0.89050 5219.3
+ fat               0.89152 5219.3
+ factor(smokstat)  2.04224 5219.8
+ pb(cholesterol)  30.44355 6529.3
--------------------------------------------------- 
Distribution parameter:  nu 
Start:  AIC= 5217.08 
 ~1 

                        Df    AIC
<none>                     5217.1
+ cholesterol      1.08855 5217.6
+ pb(cholesterol)  1.08863 5217.6
+ log(cholesterol) 1.01471 5217.7
+ factor(sex)      1.09033 5218.3
+ fat              1.09516 5218.4
+ pb(fat)          1.09524 5218.4
+ factor(smokstat) 1.24363 5218.9
+ fiber            0.74450 5219.1
+ pb(fiber)        0.74461 5219.1
+ factor(vituse)   1.97364 5220.0
--------------------------------------------------- 
Distribution parameter:  tau 
Start:  AIC= 5217.08 
 ~1 

                         Df    AIC
<none>                      5217.1
+ fiber             0.88883 5217.6
+ pb(fiber)         0.88883 5217.6
+ log(cholesterol)  1.06620 5218.9
+ factor(sex)       0.92675 5218.9
+ fat               0.94527 5219.2
+ pb(fat)           0.94527 5219.2
+ cholesterol       0.94538 5219.2
+ pb(cholesterol)   0.94538 5219.2
+ factor(smokstat)  2.02535 5220.9
+ factor(vituse)   -2.17993 5226.1
--------------------------------------------------- 
Distribution parameter:  nu 
Start:  AIC= 5217.08 
 ~1 

--------------------------------------------------- 
Distribution parameter:  sigma 
Start:  AIC= 5217.08 
 ~cholesterol 

                  Df    AIC
<none>               5217.1
- cholesterol 1.5529 5217.2
--------------------------------------------------- 
Distribution parameter:  mu 
Start:  AIC= 5217.08 
 betadiet ~ pb(fiber) + pb(cholesterol) + fat + factor(smokstat) 

                       Df    AIC
<none>                    5217.1
- fat              1.6686 5219.4
- factor(smokstat) 2.6010 5219.6
- pb(cholesterol)  7.2076 5233.8
- pb(fiber)        2.9944 5305.1
--------------------------------------------------- 

Stepwise selection

summary(m.step)
******************************************************************
Family:  c("BCTo", "Box-Cox-t-orig.") 

Call:  gamlss(formula = betadiet ~ pb(fiber) + pb(cholesterol) +  
    fat + factor(smokstat), sigma.formula = ~cholesterol,  
    family = BCTo, data = plasma, n.cyc = 50, trace = FALSE,  
    nu.formula = ~1, tau.formula = ~1) 

Fitting method: RS() 

------------------------------------------------------------------
Mu link function:  log
Mu Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        6.6944554  0.0962626  69.544   <2e-16 ***
pb(fiber)          0.0610383  0.0057819  10.557   <2e-16 ***
pb(cholesterol)    0.0007747  0.0003524   2.199   0.0287 *  
fat               -0.0021934  0.0012383  -1.771   0.0776 .  
factor(smokstat)2  0.0880635  0.0644600   1.366   0.1729    
factor(smokstat)3 -0.1243547  0.0901867  -1.379   0.1690    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
Sigma link function:  log
Sigma Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.6333595  0.0997791  -6.348  8.2e-10 ***
cholesterol -0.0004655  0.0003697  -1.259    0.209    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
Nu link function:  identity 
Nu Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   0.2209     0.1136   1.945   0.0528 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
Tau link function:  log 
Tau Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   2.4203     0.5969   4.055 6.42e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
NOTE: Additive smoothing terms exist in the formulas: 
 i) Std. Error for smoothers are for the linear effect only. 
ii) Std. Error for the linear terms maybe are not accurate. 
------------------------------------------------------------------
No. of observations in the fit:  314 
Degrees of Freedom for the fit:  18.08183
      Residual Deg. of Freedom:  295.9182 
                      at cycle:  12 
 
Global Deviance:     5180.913 
            AIC:     5217.076 
            SBC:     5284.872 
******************************************************************

Stepwise selection

wp(m.step)

LASSO

  • Factors need to be numeric
plasma |>
  mutate(
    smokstat = as.numeric(smokstat),
    sex = as.numeric(sex),
    vituse = as.numeric(vituse)
  ) -> plasma


  • LASSO only selects parametric terms, i.e. cannot take splines, random effects

LASSO

We use the gnet() function in the gamlss.lasso package:

library(gamlss.lasso)


Straight LASSO (non-adaptive)

m.lasso <- 
  gamlss(betadiet~gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC", adaptive=NULL),
             sigma.formula =~ gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC", adaptive=NULL),
             nu.formula =~ gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC", adaptive=NULL),
             tau.formula =~ gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC", adaptive=NULL),
             data=plasma, family=BCTo, bf.cyc=1, trace = FALSE)


Adaptive LASSO

m.lasso.adaptive <- 
  gamlss(betadiet~gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC"),
                   sigma.formula =~ gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC"),
                   nu.formula =~ gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC"),
                   tau.formula =~ gnet(x.vars= names(plasma)[1:10], method = "IC", ICpen="BIC"),
                   data=plasma, family=BCTo, bf.cyc=1, trace = FALSE)

LASSO

  • Models m.lasso and m.lasso.adaptive only contain linear terms.

  • Add in logs of all continuous covariates:

plasma |>
  mutate(logage = log(age),
         logbmi = log(bmi),
         logcal = log(calories),
         logfat = log(fat),
         logfiber = log(fiber),
         logalc = log(alcohol+0.1),
         logchol = log(cholesterol)) -> plasma

m.lasso.adaptive2 <- 
  gamlss(betadiet~gnet(x.vars= names(plasma)[c(1:10, 15:21)], method = "IC", ICpen="BIC"),
            sigma.formula =~ gnet(x.vars= names(plasma)[c(1:10, 15:21)], method = "IC", ICpen="BIC"),
            nu.formula =~ gnet(x.vars= names(plasma)[c(1:10, 15:21)], method = "IC", ICpen="BIC"),
            tau.formula =~ gnet(x.vars= names(plasma)[c(1:10, 15:21)], method = "IC", ICpen="BIC"),
            data=plasma, family=BCTo, bf.cyc=1, trace = FALSE)

Model selection criteria

AIC(m.step, m.lasso, m.lasso.adaptive, m.lasso.adaptive2)
                        df      AIC
m.step            18.08183 5217.076
m.lasso.adaptive2  5.00000 5228.704
m.lasso.adaptive   5.00000 5243.379
m.lasso            5.00000 5247.051


BIC(m.step, m.lasso, m.lasso.adaptive, m.lasso.adaptive2)
                        df      BIC
m.step            18.08183 5284.872
m.lasso            5.00000 5265.798
m.lasso.adaptive   5.00000 5262.126
m.lasso.adaptive2  5.00000 5247.451


  • AIC selects m.step

  • BIC selects m.lasso.adaptive2

Parameter estimates

m.lasso.adaptive2

rbind(mu=tail(getSmo(m.lasso.adaptive2, "mu") ,1)[[1]]$beta,
                    sigma=tail(getSmo(m.lasso.adaptive2, "sigma") ,1)[[1]]$beta,
                    nu=tail(getSmo(m.lasso.adaptive2, "nu") ,1)[[1]]$beta,
                    tau=tail(getSmo(m.lasso.adaptive2, "tau") ,1)[[1]]$beta) 
      age sex smokstat bmi vituse calories fat fiber alcohol cholesterol logage
mu      0   0        0   0      0        0   0     0       0           0      0
sigma   0   0        0   0      0        0   0     0       0           0      0
nu      0   0        0   0      0        0   0     0       0           0      0
tau     0   0        0   0      0        0   0     0       0           0      0
      logbmi logcal logfat  logfiber logalc logchol
mu         0      0      0 0.8186423      0       0
sigma      0      0      0 0.0000000      0       0
nu         0      0      0 0.0000000      0       0
tau        0      0      0 0.0000000      0       0

m.lasso.adaptive

rbind(mu=tail(getSmo(m.lasso.adaptive, "mu") ,1)[[1]]$beta,
                    sigma=tail(getSmo(m.lasso.adaptive, "sigma") ,1)[[1]]$beta,
                    nu=tail(getSmo(m.lasso.adaptive, "nu") ,1)[[1]]$beta,
                    tau=tail(getSmo(m.lasso.adaptive, "tau") ,1)[[1]]$beta) 
      age sex smokstat bmi vituse calories fat      fiber alcohol cholesterol
mu      0   0        0   0      0        0   0 0.05748841       0           0
sigma   0   0        0   0      0        0   0 0.00000000       0           0
nu      0   0        0   0      0        0   0 0.00000000       0           0
tau     0   0        0   0      0        0   0 0.00000000       0           0

m.lasso

rbind(mu=tail(getSmo(m.lasso.adaptive, "mu") ,1)[[1]]$beta,
                    sigma=tail(getSmo(m.lasso, "sigma") ,1)[[1]]$beta,
                    nu=tail(getSmo(m.lasso, "nu") ,1)[[1]]$beta,
                    tau=tail(getSmo(m.lasso, "tau") ,1)[[1]]$beta) 
      age sex smokstat bmi vituse calories fat      fiber alcohol cholesterol
mu      0   0        0   0      0        0   0 0.05748841       0           0
sigma   0   0        0   0      0        0   0 0.00000000       0           0
nu      0   0        0   0      0        0   0 0.00000000       0           0
tau     0   0        0   0      0        0   0 0.00000000       0           0

LASSO model, recomputed

m.lasso.ad2 <- gamlss(betadiet ~ logfiber, data=plasma, family=BCTo)
GAMLSS-RS iteration 1: Global Deviance = 5228.146 
GAMLSS-RS iteration 2: Global Deviance = 5218.606 
GAMLSS-RS iteration 3: Global Deviance = 5218.37 
GAMLSS-RS iteration 4: Global Deviance = 5218.33 
GAMLSS-RS iteration 5: Global Deviance = 5218.321 
GAMLSS-RS iteration 6: Global Deviance = 5218.318 
GAMLSS-RS iteration 7: Global Deviance = 5218.318 
summary(m.lasso.ad2)
******************************************************************
Family:  c("BCTo", "Box-Cox-t-orig.") 

Call:  gamlss(formula = betadiet ~ logfiber, family = BCTo,  
    data = plasma) 

Fitting method: RS() 

------------------------------------------------------------------
Mu link function:  log
Mu Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  5.37324    0.18403   29.20   <2e-16 ***
logfiber     0.86470    0.07384   11.71   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
Sigma link function:  log
Sigma Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.66598    0.06218  -10.71   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
Nu link function:  identity 
Nu Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.16413    0.09424   1.742   0.0826 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
Tau link function:  log 
Tau Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   2.6357     0.6472   4.072 5.92e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

------------------------------------------------------------------
No. of observations in the fit:  314 
Degrees of Freedom for the fit:  5
      Residual Deg. of Freedom:  309 
                      at cycle:  7 
 
Global Deviance:     5218.318 
            AIC:     5228.318 
            SBC:     5247.065 
******************************************************************

gamlss2

The following finds response distribution and selects variables:

f <- betadiet ~ age + s(age) + 
                 sex + smokstat + 
                 bmi + s(bmi) + 
                 vituse + 
                 calories + s(calories) + 
                 fat + s(fat) + 
                 fiber + s(fiber) + 
                 alcohol + s(alcohol) + 
                 cholesterol + s(cholesterol)|.|.|.

m.gamlss2 <- find_gamlss2(f, data=plasma,
                          families = available_families(type = "continuous"),
                          select = TRUE)
summary(m.gamlss2)

Reference

Harrell, F.E. (2002). Plasma retinol and beta-carotene dataset. https://hbiostat.org/data/repo/plasma.html.